package com.abyss.source;
import org.apache.flink.api.java.ExecutionEnvironment;
import org.apache.flink.api.java.operators.DataSource;

import java.io.Serializable;
import java.util.Arrays;
import java.util.HashSet;
/**
 * @author Abyss
 * @date 2020/10/4
 * @description 基于本地集合对象的Source
 */
public class LocalCollectionSourceDemo {
      /*
    1. 获取执行环境
    2. 获取source资源
    3. 处理数据
    4. 输出数据
     */

    public static void main(String[] args) throws Exception {
        // env
        ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();

        // 1. source获取数据
        /*
        1. 从元素中获取数据
        2. 从集合中获取数据
        3. 生成一个数字序列
         */

        // 1.1 从元素列表中获取数据
//        DataSource<Integer> eleSource1 = env.fromElements(1, 5, 6, 9, 7);
        DataSource<String> eleSource2 = env.fromElements("hadoop", "spark").setParallelism(2);
//        DataSource<Object> eleSource3 = env.fromElements("haha", 1);

        // 1.2 从集合中获取数据
        DataSource<String> colSource = env.fromCollection(Arrays.asList("hadoop", "spark", "flink")).setParallelism(2);


        HashSet<String> hashSet = new HashSet<>();
        hashSet.add("itheima");
        hashSet.add("itcast");
        DataSource<String> colSource2 = env.fromCollection(hashSet);

        // 1.3 生成一个序列的数据
        DataSource<Long> seqSource = env.generateSequence(1, 10).setParallelism(4);

        // 2 数据处理

        // 3. 输出输出
        colSource.print();
        colSource2.print();
        seqSource.print();
    }
}
